Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
OpenGEODE
Commits
5aa248e0
Commit
5aa248e0
authored
Oct 08, 2015
by
Maxime Perrotin
Browse files
Support octet string literals
parent
f27d3e6a
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
5aa248e0
...
...
@@ -148,11 +148,12 @@ The fonts are the fonts from Ubuntu, check licence in file FONT-LICENSE.TXT
Changelog
=========
1.
2.
8
(10/2015)
1.
2.
9
(10/2015)
-
Better support of renamePolicy
-
Better handling of models without CIF coordinates
-
Minor bug fixes
-
Forloop syntax error handled correctly when using range
-
support Hex and bit string literals when working with OCTET STRING
1.
2.4 (07/2015)
-
Use version 3.2.x of the ASN1SCC compiler with new -renamePolicy flag
...
...
opengeode/icons.py
View file @
5aa248e0
...
...
@@ -2,8 +2,8 @@
# Resource object code
#
# Created:
Sat Jul 11 15:47:41
2015
# by: The Resource Compiler for PySide (Qt v4.8.
4
)
# Created:
Thu Oct 8 21:18:37
2015
# by: The Resource Compiler for PySide (Qt v4.8.
6
)
#
# WARNING! All changes made in this file will be lost!
opengeode/ogParser.py
View file @
5aa248e0
...
...
@@ -31,6 +31,7 @@ import os
import
math
import
logging
import
traceback
import
binascii
from
itertools
import
chain
,
permutations
,
combinations
from
collections
import
defaultdict
,
Counter
import
antlr3
...
...
@@ -1670,7 +1671,23 @@ def primary(root, context):
})
elif
root
.
type
==
lexer
.
STRING
:
prim
=
ogAST
.
PrimStringLiteral
()
prim
.
value
=
root
.
text
if
root
.
text
[
-
1
]
in
(
'B'
,
'b'
):
try
:
prim
.
value
=
"'{}'"
.
format
(
binascii
.
unhexlify
(
'%x'
%
int
(
root
.
text
[
1
:
-
2
],
2
)))
except
(
ValueError
,
TypeError
)
as
err
:
errors
.
append
(
error
(
root
,
'Bit string literal: {}'
.
format
(
err
)))
prim
.
value
=
"''"
elif
root
.
text
[
-
1
]
in
(
'H'
,
'h'
):
try
:
prim
.
value
=
"'{}'"
.
format
(
root
.
text
[
1
:
-
2
].
decode
(
'hex'
))
except
(
ValueError
,
TypeError
)
as
err
:
errors
.
append
(
error
(
root
,
'Octet string literal: {}'
.
format
(
err
)))
prim
.
value
=
"''"
else
:
prim
.
value
=
root
.
text
prim
.
exprType
=
type
(
'PrStr'
,
(
object
,),
{
'kind'
:
'StringType'
,
'Min'
:
str
(
len
(
prim
.
value
)
-
2
),
...
...
@@ -1735,13 +1752,6 @@ def primary(root, context):
'Max'
:
str
(
len
(
root
.
children
)),
'type'
:
prim_elem
.
exprType
})
elif
root
.
type
==
lexer
.
BITSTR
:
prim
=
ogAST
.
PrimBitStringLiteral
()
warnings
.
append
(
warning
(
root
,
'Bit string literal not supported yet'
))
elif
root
.
type
==
lexer
.
OCTSTR
:
prim
=
ogAST
.
PrimOctetStringLiteral
()
warnings
.
append
(
warning
(
root
,
'Octet string literal not supported yet'
))
elif
root
.
type
==
lexer
.
STATE
:
prim
=
ogAST
.
PrimStateReference
()
prim
.
exprType
=
ENUMERATED
()
...
...
opengeode/opengeode.py
View file @
5aa248e0
...
...
@@ -116,7 +116,7 @@ except ImportError:
__all__
=
[
'opengeode'
,
'SDL_Scene'
,
'SDL_View'
,
'parse'
]
__version__
=
'1.2.
8
'
__version__
=
'1.2.
9
'
if
hasattr
(
sys
,
'frozen'
):
# Detect if we are running on Windows (py2exe-generated)
...
...
opengeode/sdl92Lexer.py
View file @
5aa248e0
This diff is collapsed.
Click to expand it.
opengeode/sdl92Parser.py
View file @
5aa248e0
This diff is collapsed.
Click to expand it.
sdl92.g
View file @
5aa248e0
...
...
@@ -870,9 +870,7 @@ primary_expression
primary
: BITSTR^
| OCTSTR^
| TRUE^
: TRUE^
| FALSE^
| STRING
| NULL^
...
...
@@ -1310,25 +1308,19 @@ ENDNEWTYPE : E N D N E W T Y P E;
ARRAY : A R R A Y;
CONSTANTS : C O N S T A N T S;
STRUCT : S T R U C T;
SYNONYM
: S Y N O N Y M;
SYNONYM
: S Y N O N Y M;
IMPORT : I M P O R T;
VIEW : V I E W;
ACTIVE : A C T I V E;
fragment
STR
: '\'' ( options {greedy=false;} : .)* '\'';
STRING
: STR+ ;
BITSTR
: '"' ('0'|'1'|' ' | '\t' | '\r' | '\n')* '"B';
STRING
: STR+ (B|H)?;
OCTSTR
: '"' ('0'..'9'|'a'..'f'|'A'..'F'|' ' | '\t' | '\r' | '\n')*
'"H
';
fragment
STR
:
'\'' ( options {greedy=false;} : .)* '\'
';
ID
: ALPHA (ALPHA | DIGITS | '_')*;
...
...
tests/regression/test-strings/og.pr
View file @
5aa248e0
...
...
@@ -15,7 +15,7 @@ signal run;
CONNECT c AND r;
/* CIF PROCESS (253, 105), (150, 75) */
PROCESS og;
/* CIF TEXT (0, 33), (356,
14
3) */
/* CIF TEXT (0, 33), (356,
20
3) */
-- Text area for declarations and comments
dcl a List := {'a', 'b', 'foo', 'bar
...
...
@@ -25,29 +25,35 @@ dcl result OutStr := '';
dcl sep OutStr := ', ';
dcl nosep OutStr := '';
dcl strlit outStr := '68656c6c6f'H;
dcl bitstrlit outStr := '01010110'B;
/* CIF ENDTEXT */
/* CIF START (
597
, 63), (70, 35) */
/* CIF START (
639
, 63), (70, 35) */
START;
/* CIF TASK (5
39
, 113), (185, 35) */
/* CIF TASK (5
81
, 113), (185, 35) */
TASK result := result // 'Hello!';
/* CIF TASK (
584
, 163), (96, 35) */
/* CIF TASK (
626
, 163), (96, 35) */
TASK result := '';
/* CIF TASK (4
03
, 213), (457, 78) */
/* CIF TASK (4
45
, 213), (457, 78) */
TASK for each in a(2, length(a) - 1):
result := result // (if length(result) > 0 then sep else nosep fi) // each
endfor;
;;;
/* CIF PROCEDURECALL (
567
, 306), (129, 35) */
endfor;
/* CIF PROCEDURECALL (
609
, 306), (129, 35) */
CALL writeln(result);
/* CIF TASK (5
54
, 356), (155, 53) */
/* CIF TASK (5
96
, 356), (155, 53) */
TASK for sep in a:
call writeln(sep);
endfor
/* CIF COMMENT (7
29
, 365), (194, 38) */
/* CIF COMMENT (7
71
, 365), (194, 38) */
COMMENT 'Test to check scope
(sep is also a dcl-variable)';
/* CIF NEXTSTATE (597, 424), (70, 35) */
/* CIF PROCEDURECALL (509, 424), (330, 35) */
CALL writeln('String literal (should be "hello"):', strlit);
/* CIF NEXTSTATE (639, 474), (70, 35) */
NEXTSTATE wait;
/* CIF STATE (
28
6, 217), (70, 35) */
/* CIF STATE (
36
6, 217), (70, 35) */
STATE wait;
ENDSTATE;
ENDPROCESS og;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment