[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [4788] move expression's parsing to sw/lib/ocaml
From: |
Pascal Brisset |
Subject: |
[paparazzi-commits] [4788] move expression's parsing to sw/lib/ocaml |
Date: |
Sun, 04 Apr 2010 17:04:13 +0000 |
Revision: 4788
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4788
Author: hecto
Date: 2010-04-04 17:04:13 +0000 (Sun, 04 Apr 2010)
Log Message:
-----------
move expression's parsing to sw/lib/ocaml
Modified Paths:
--------------
paparazzi3/trunk/sw/tools/Makefile
paparazzi3/trunk/sw/tools/fp_proc.ml
paparazzi3/trunk/sw/tools/fp_proc.mli
paparazzi3/trunk/sw/tools/gen_flight_plan.ml
Removed Paths:
-------------
paparazzi3/trunk/sw/tools/fp_lexer.mll
paparazzi3/trunk/sw/tools/fp_parser.mly
paparazzi3/trunk/sw/tools/fp_syntax.ml
paparazzi3/trunk/sw/tools/fp_syntax.mli
Modified: paparazzi3/trunk/sw/tools/Makefile
===================================================================
--- paparazzi3/trunk/sw/tools/Makefile 2010-04-04 15:48:44 UTC (rev 4787)
+++ paparazzi3/trunk/sw/tools/Makefile 2010-04-04 17:04:13 UTC (rev 4788)
@@ -32,22 +32,18 @@
all: gen_aircraft.out gen_airframe.out gen_messages.out gen_ubx.out
gen_flight_plan.out gen_radio.out gen_periodic.out gen_settings.out
gen_tuning.out gen_xsens.out gen_modules.out gen_conf_radio_control_ppm.out
find_free_msg_id.out
-FP_CMO = fp_syntax.cmo fp_parser.cmo fp_lexer.cmo fp_proc.cmo
gen_flight_plan.cmo
+FP_CMO = fp_proc.cmo gen_flight_plan.cmo
ABS_FP = $(FP_CMO:%=$$PAPARAZZI_SRC/sw/tools/%)
gen_flight_plan.out : $(FP_CMO) ../lib/ocaml/lib-pprz.cma
@echo OL $@
$(Q)$(OCAMLC) $(INCLUDES) -custom -o $@ unix.cma str.cma xml-light.cma
ivy-ocaml.cma lib-pprz.cma $^
-fp_parser.cmo : fp_parser.cmi fp_syntax.cmi
-fp_proc.cmo : fp_lexer.cmi fp_parser.cmi fp_proc.cmi
-fp_parser.cmi : fp_parser.ml fp_syntax.cmi
-fp_lexer.cmi : fp_syntax.cmi
-fp_lexer.cmo : fp_lexer.cmi
-gen_flight_plan.cmo : fp_parser.cmi fp_proc.cmi
-fp_syntax.cmo : fp_syntax.cmi
+fp_proc.cmo : fp_proc.cmi
+gen_flight_plan.cmo : fp_proc.cmi
+
%.out : %.ml Makefile
@echo OC $<
$(Q)$(OCAMLC) $(INCLUDES) -o $@ unix.cma str.cma ivy-ocaml.cma
xml-light.cma lib-pprz.cma $<
Deleted: paparazzi3/trunk/sw/tools/fp_lexer.mll
===================================================================
--- paparazzi3/trunk/sw/tools/fp_lexer.mll 2010-04-04 15:48:44 UTC (rev
4787)
+++ paparazzi3/trunk/sw/tools/fp_lexer.mll 2010-04-04 17:04:13 UTC (rev
4788)
@@ -1,36 +0,0 @@
-(*
- $Id$
-*)
-{
-open Fp_parser
-}
-rule token = parse
- [' ' '\t' '\n'] { token lexbuf}
- | "/*"([^'*']|'*'[^'/'])*'*'*'/' { token lexbuf}
- | ['0'-'9']+ { INT (int_of_string (Lexing.lexeme lexbuf)) }
- | ['0'-'9']+'.'['0'-'9']* { FLOAT (float_of_string (Lexing.lexeme lexbuf)) }
- | '$'?['a'-'z' '_' 'A'-'Z'] (['a'-'z' 'A'-'Z' '_' '.' '0'-'9']*) { IDENT
(Lexing.lexeme lexbuf) }
- | '\''[^'\'']+'\'' { let s = Lexing.lexeme lexbuf in IDENT (String.sub s 1
(String.length s - 2)) }
- | ',' { COMMA }
- | ';' { SEMICOLON }
- | ':' { COLON }
- | '(' { LP }
- | ')' { RP }
- | '{' { LC }
- | '}' { RC }
- | '[' { LB }
- | ']' { RB }
- | "==" { EQ }
- | "&&" { AND }
- | "||" { OR }
- | ">" { GT }
- | "%" { MOD }
- | ">=" { GEQ }
- | "+" { PLUS }
- | "=" { ASSIGN }
- | "-" { MINUS }
- | "*" { MULT }
- | "/" { DIV }
- | "!" { NOT }
- | eof { EOF }
-
Deleted: paparazzi3/trunk/sw/tools/fp_parser.mly
===================================================================
--- paparazzi3/trunk/sw/tools/fp_parser.mly 2010-04-04 15:48:44 UTC (rev
4787)
+++ paparazzi3/trunk/sw/tools/fp_parser.mly 2010-04-04 17:04:13 UTC (rev
4788)
@@ -1,53 +0,0 @@
-/* $Id$ */
-%{
-open Fp_syntax
-%}
-%token <int> INT
-%token <float> FLOAT
-%token <string> IDENT
-%token EOF
-%token COMMA SEMICOLON LP RP LC RC LB RB AND COLON OR
-%token EQ GT ASSIGN GEQ NOT
-%token PLUS MINUS
-%token MULT DIV MOD
-
-%left AND OR /* lowest precedence */
-%left EQ GT ASSIGN GEQ
-%left PLUS MINUS
-%left MULT DIV MOD
-%nonassoc NOT
-%nonassoc UMINUS /* highest precedence */
-
-%start expression /* the entry point */
-%type <Fp_syntax.expression> expression
-
-%%
-
-expression:
- expression GT expression { CallOperator (">",[$1;$3]) }
- | expression GEQ expression { CallOperator (">=",[$1;$3]) }
- | expression EQ expression { CallOperator ("==",[$1;$3]) }
- | expression AND expression { CallOperator ("&&",[$1;$3]) }
- | expression OR expression { CallOperator ("||",[$1;$3]) }
- | expression PLUS expression { CallOperator ("+",[$1;$3]) }
- | expression MINUS expression { CallOperator ("-",[$1;$3]) }
- | expression MULT expression { CallOperator ("*",[$1;$3]) }
- | expression DIV expression { CallOperator ("/",[$1;$3]) }
- | expression MOD expression { CallOperator ("%",[$1;$3]) }
- | MINUS expression %prec UMINUS { CallOperator ("-",[$2]) }
- | NOT expression { CallOperator ("!",[$2]) }
- | INT { Int $1 }
- | FLOAT { Float $1 }
- | IDENT { Ident $1 }
- | IDENT LP Args RP { Call ($1, $3) }
- | LP expression RP { $2 }
- | IDENT LB expression RB { Index ($1, $3) }
-;
-
-Args: { [] }
- | expression NextArgs { $1::$2 }
-;
-
-NextArgs: { [] }
- | COMMA expression NextArgs { $2::$3 }
-;
Modified: paparazzi3/trunk/sw/tools/fp_proc.ml
===================================================================
--- paparazzi3/trunk/sw/tools/fp_proc.ml 2010-04-04 15:48:44 UTC (rev
4787)
+++ paparazzi3/trunk/sw/tools/fp_proc.ml 2010-04-04 17:04:13 UTC (rev
4788)
@@ -28,7 +28,7 @@
module G2D = Geometry_2d
-open Fp_syntax
+open Expr_syntax
let rec list_split3 = function
[] -> ([], [], [])
@@ -38,7 +38,7 @@
let parse_expression = fun s ->
let lexbuf = Lexing.from_string s in
try
- Fp_parser.expression Fp_lexer.token lexbuf
+ Expr_parser.expression Expr_lexer.token lexbuf
with
Failure("lexing: empty token") ->
fprintf stderr "Lexing error in '%s': unexpected char: '%c' \n"
@@ -56,7 +56,7 @@
let rec sub = fun e ->
match e with
Ident i -> Ident (try List.assoc i env with Not_found -> i)
- | Int _ | Float _ -> e
+ | Int _ | Float _ | Field _ -> e
| Call (i, es) -> Call (i, List.map sub es)
| CallOperator (i, es) -> CallOperator (i, List.map sub es)
| Index (i,e) -> Index (i,sub e) in
@@ -65,7 +65,7 @@
let transform_expression = fun env e ->
let e' = subst_expression env e in
- Fp_syntax.sprint_expression e'
+ Expr_syntax.sprint e'
let transform_values = fun attribs_not_modified env attribs ->
@@ -204,7 +204,7 @@
and args_assocs = build_assocs "arg" "name" "value" include_xml in
try
- let proc = ExtXml.parse_file f in
+ let proc = ExtXml.parse_file ~noprovedtd:true f in
let params = List.filter
(fun x -> ExtXml.tag_is x "param")
(Xml.children proc) in
Modified: paparazzi3/trunk/sw/tools/fp_proc.mli
===================================================================
--- paparazzi3/trunk/sw/tools/fp_proc.mli 2010-04-04 15:48:44 UTC (rev
4787)
+++ paparazzi3/trunk/sw/tools/fp_proc.mli 2010-04-04 17:04:13 UTC (rev
4788)
@@ -24,7 +24,7 @@
*
*)
-val parse_expression : string -> Fp_syntax.expression
+val parse_expression : string -> Expr_syntax.expression
val process_paths : Xml.xml -> Xml.xml
(** [process_paths flight_plan] *)
Deleted: paparazzi3/trunk/sw/tools/fp_syntax.ml
===================================================================
--- paparazzi3/trunk/sw/tools/fp_syntax.ml 2010-04-04 15:48:44 UTC (rev
4787)
+++ paparazzi3/trunk/sw/tools/fp_syntax.ml 2010-04-04 17:04:13 UTC (rev
4788)
@@ -1,90 +0,0 @@
-(*
- $Id$
-
- Syntax of flight plan expressions
-*)
-
-open Printf
-
-type ident = string
-
-type operator = string
-type expression =
- | Ident of ident
- | Int of int
- | Float of float
- | Call of ident * (expression list)
- | CallOperator of ident * (expression list)
- | Index of ident * expression
-
-let c_var_of_ident = fun x -> "_var_" ^ x
-
-let rec sprint_expression = function
- Ident i when i.[0] = '$' -> sprintf "%s" (c_var_of_ident (String.sub i 1
(String.length i - 1)))
- | Ident i -> sprintf "%s" i
- | Int i -> sprintf "%d" i
- | Float i -> sprintf "%f" i
- | CallOperator (op, [e1;e2]) ->
- sprintf "(" ^ sprint_expression e1 ^ op ^ sprint_expression e2 ^ ")"
- | CallOperator (op, [e1]) ->
- sprintf "%s(%s)" op (sprint_expression e1)
- | CallOperator (_,_) -> failwith "Operator should be binary or unary"
- | Call (i, es) ->
- let ses = List.map sprint_expression es in
- sprintf "%s(" i ^ String.concat "," ses ^ ")"
- | Index (i,e) -> sprintf "%s[" i ^ sprint_expression e ^ "]"
-
-(* Valid functions : FIXME *)
-let functions = [
- "Qdr";
- "And";
- "Or";
- "RcRoll";
- "RcEvent1";
- "RcEvent2";
- "RadOfDeg"]
-
-(* Valid identifiers : FIXME *)
-let variables = [
- "launch";
- "estimator_z";
- "estimator_flight_time";
- "estimator_hspeed_mod";
- "estimator_theta";
- "circle_count";
- "vsupply";
- "stage_time";
- "stage_time_ds";
- "block_time";
- "SECURITY_ALT";
- "ground_alt"; "GROUND_ALT";
- "TRUE";
- "FALSE";
- "QFU";
- "gps_mode"; "gps_utm_east"; "gps_utm_north"; "gps_utm_zone";
- "nav_utm_east0"; "nav_utm_north0"; "nav_utm_zone0"; "cruise_throttle";
"gps_lost"
-
-]
-
-exception Unknown_ident of string
-exception Unknown_operator of string
-exception Unknown_function of string
-
-let unexpected = fun kind x ->
- fprintf stderr "Warning: unexpected %s in expression: '%s' \n" kind x
-
-let rec check_expression = fun e ->
- match e with
- Ident i when i.[0] = '$' -> ()
- | Ident i ->
- if not (List.mem i variables) then
- unexpected "ident" i
- | Int _ | Float _ | CallOperator _ -> ()
- | Call (i, es) ->
- if not (List.mem i functions) then
- unexpected "function" i;
- List.iter check_expression es
- | Index (i,e) ->
- if not (List.mem i variables) then
- unexpected "ident" i;
- check_expression e
Deleted: paparazzi3/trunk/sw/tools/fp_syntax.mli
===================================================================
--- paparazzi3/trunk/sw/tools/fp_syntax.mli 2010-04-04 15:48:44 UTC (rev
4787)
+++ paparazzi3/trunk/sw/tools/fp_syntax.mli 2010-04-04 17:04:13 UTC (rev
4788)
@@ -1,48 +0,0 @@
-(*
- * $Id$
- *
- * Syntax of flight plan parsed expressions
- *
- * Copyright (C) 2004 CENA/ENAC, Pascal Brisset, Antoine Drouin
- *
- * This file is part of paparazzi.
- *
- * paparazzi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * paparazzi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with paparazzi; see the file COPYING. If not, write to
- * the Free Software Foundation, 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- *)
-
-type ident = string
-type operator = string
-type expression =
- | Ident of ident
- | Int of int
- | Float of float
- | Call of ident * expression list
- | CallOperator of ident * expression list
- | Index of ident * expression
-
-val c_var_of_ident : ident -> string
-(** Encapsulate a user ident into a C variable *)
-
-val sprint_expression : expression -> string
-
-exception Unknown_ident of string
-exception Unknown_operator of string
-exception Unknown_function of string
-
-val check_expression : expression -> unit
-(** May raise [Unknown_ident], [Unknown_operator] or [Unknown_function]
- exceptions *)
Modified: paparazzi3/trunk/sw/tools/gen_flight_plan.ml
===================================================================
--- paparazzi3/trunk/sw/tools/gen_flight_plan.ml 2010-04-04 15:48:44 UTC
(rev 4787)
+++ paparazzi3/trunk/sw/tools/gen_flight_plan.ml 2010-04-04 17:04:13 UTC
(rev 4788)
@@ -50,14 +50,14 @@
exit 1 in
begin
try
- Fp_syntax.check_expression e
+ Expr_syntax.check_expression e
with
- Fp_syntax.Unknown_operator x -> unexpected "operator" x
- | Fp_syntax.Unknown_ident x -> unexpected "ident" x
- | Fp_syntax.Unknown_function x -> unexpected "function" x
+ Expr_syntax.Unknown_operator x -> unexpected "operator" x
+ | Expr_syntax.Unknown_ident x -> unexpected "ident" x
+ | Expr_syntax.Unknown_function x -> unexpected "function" x
end
end;
- Fp_syntax.sprint_expression e
+ Expr_syntax.sprint e
let parsed_attrib = fun xml a ->
parse (ExtXml.attrib xml a)
@@ -304,7 +304,7 @@
| "for" ->
let f = gen_label "for" in
let e = gen_label "endfor" in
- let v = Fp_syntax.c_var_of_ident (ExtXml.attrib x "var")
+ let v = Expr_syntax.c_var_of_ident (ExtXml.attrib x "var")
and from_ = parsed_attrib x "from"
and to_expr = parsed_attrib x "to" in
let to_var = v ^ "_to" in
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [4788] move expression's parsing to sw/lib/ocaml,
Pascal Brisset <=